The field of computer technology advances at almost a lightning pace. Equipment rarely has more than a five-year life. In most instances, the life is only two to three years. In some instances, it is possible to replace various pieces of the equipment. In other instances, all that is required is an upgrade of the firmware or software. The problem arises when other system devices communicating with the system device being upgraded, cannot tolerate even a few milliseconds of unavailability of the system device, under upgrade. Failure to do so, may results in system failure and hence significant down time. Computer equipment owners demand near perfect operation of their equipment. Owners talk in terms of anything less than 99.999% availability as being unacceptable.
Shutting down a computer system can cost a company thousands and thousands of dollars for each hour the system remains unavailable. Upgrades of computer equipment usually result in some downtime of the processing. This has resulted in technology assistants upgrading equipment at odd hours of the morning. This results in additional costs to the company as well.
Software upgrades on larger computer systems are needed to add additional features or fix reoccurring problems or bugs. In light of the financial consequences of shutting down a computer, there is a need to upgrade firmware without disrupting the processing time. Prior systems involve halting the real-time system, while the upgrade in code is performed, which may require halting the complete system due to other system devices requiring immediate response from the system device under upgrade. This is not ideal for the aforementioned reasons. Furthermore, the owner of the equipment is less reluctant to perform upgrades or fix bugs unless absolutely necessary.
Accordingly, it is desirable to provide an apparatus and method that enables the owner of computer systems to upgrade the software of one of their devices to add new features or fix software bugs, in a way so that the device being upgrade is always available to other system devices. This in turn will allow the computer system to run or operate in real time and continue to process requests.